(PYTHON) input() & raw_input()

Reference

  • PEP 3111 - Python 3.8.1 Documentation
  • Python2 지원 종료 - Sunsetting Python 2
  • 파이썬 input - ksg97031님의 블로그

개인적인 생각과 상상으로 작성한 내용들이 포함되어 있습니다
PEP = Python Enhancement Proposals



다른 사람들의 코드를 읽다보면 raw_input() 함수를 사용하는 것을 생각보다 자주 볼 수 있다
input() 함수와 raw_input() 함수의 차이는 무엇일까?

Python 2? 3?

Python은 2.x 버전과 3.x 버전이 있고 서로 사소한 부분들에 있어 조금씩 차이가 나기 때문에 초보자 입장에서는 자꾸 헤매게된다

2가지 버전이 같이 사용되었던 이유는,
2000년도에 Python 2.0을 공개하였고 성능 향상을 위한 지속적인 개선 과정 중 근본적인 변화가 필요하다고 느껴서 2006년 Python 3.0을 공개하게 되었다
하지만 언제나 새로운 것을 적용하는 것은 쉬운 일이 아니다
Python 2에서 3으로 업그레이드 해달라는 파이썬 재단의 수 많은 요청에도 기존 2버전에 익숙한 사용자들은 응하지 않았다
그래서 어쩔 수 없이 2가지 버전을 모두 지원하고 있었던 것이다
실제로 2008년, 공식적으로 2015년에 지원을 중단하겠다고 발표를 했었지만 많은 곳에서 업그레이드를 하지 않아 2014년, 지원 중단일을 2020년으로 미루기로 결정한 것이다

(이제는 시계가 멈추었지만) Python 2.7 will retire in…
여기서 남은 시간을 볼 수 있었다

이제 마음 편히 Python 3만 배우고 익히면 된다

Python 2의 입력 함수

  • input()
    입력된 값의 형식에 맞게 자동으로 타입을 변환 시킨다
    (문자열 값은 “”, ‘’을 붙여야 한다. 없으면 문자로 인식 못함)
obj = input('입력해주세요: ')
print(type(obj))
print(obj)

# output

# 입력해주세요: 'hi hi'

# <type 'str'>

# hi hi

#

# 입력해주세요: hi hi

# SyntaxError: Unexpected EOF while parsing

#

# 입력해주세요: 2010

# <type 'int'>

# 2010

#

# 입력해주세요: 20.10

# <type 'float'>

# 20.10

  • raw_input()
    모든 입력 값을 문자열 타입으로 받는다
obj = raw_input('입력해주세요: ')
print(type(obj))
print(obj)

# output

# 입력해주세요: 'hi hi'

# <type 'str'>

# hi hi

#

# 입력해주세요: 2010

# <type 'str'>

# 2010

#

# 입력해주세요: 20.10

# <type 'str'>

# 20.10

Python 3의 입력 함수

결론부터 이야기 하자면 Python3에서는 input() 함수만 존재한다
input() 함수는 모든 입력을 문자열 타입으로 받는다

Python 2에서 3으로 바뀌면서 입력 함수에 변화가 있었다
Python 2에서는 input() 함수와 raw_input() 함수 2가지가 존재했다

하지만 Python 3의 공식 문서를 살펴보면 PEP 3111 에 명시되어 있듯이
Python 2의 raw_input() 함수의 이름이 input() 으로 바뀐 것이다

없어진게 아니라 이름이 바뀐 것이다.
즉, python 3의 input은 python 2의 raw_input 과 같은 기능을 한다